﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace Dataloading
{
    public partial class JuegosView : Form
    {
        private JuegoTipo1Control juegoTipo1Control;
        private JuegoTipo2Control juegoTipo2Control;
        private ControladorJuego controlador;

        public JuegosView()
        {
            InitializeComponent();

            this.juegoTipo1Control = new JuegoTipo1Control();
            this.juegoTipo2Control = new JuegoTipo2Control();
            this.Controls.Add(juegoTipo1Control);
            this.Controls.Add(juegoTipo2Control);

            this.controlador = new ControladorJuego();
            List<TipoJuego> juegos = controlador.GetTodos();
            this.lista_juegos.DataSource = juegos;
            this.lista_juegos.DisplayMember = "nombre";
            this.lista_juegos.ValueMember = "Id";

        }

        private void Juegos_Load(object sender, EventArgs e)
        {

        }

        private void lista_juegos_SelectedIndexChanged(object sender, EventArgs e)
        {
            TipoJuego juego = (TipoJuego)this.lista_juegos.SelectedItem;
            this.MostrarControl(juego);                        
        }

        private void MostrarControl(TipoJuego juego)
        {
            Point posicion = new Point(210, 12);
            switch (juego.Tipo)
            {
                case 1:
                    this.juegoTipo2Control.Visible = false;
                    this.juegoTipo1Control.Visible = true;
                    this.juegoTipo1Control.Location = posicion;
                    this.juegoTipo1Control.LoadData((JuegoTipo1) juego);
                    break;
                case 2:
                    this.juegoTipo1Control.Visible = false;
                    this.juegoTipo2Control.Visible = true;
                    this.juegoTipo2Control.Location = posicion;
                    this.juegoTipo2Control.LoadData((JuegoTipo2) juego);
                    break;
            }
        }

        private void guardar_btn_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.juegoTipo1Control.Visible)
                {
                    JuegoTipo1 juego = (JuegoTipo1)this.lista_juegos.SelectedItem;
                    juego.SetData(juegoTipo1Control.getData());
                }
                else
                {
                    JuegoTipo2 juego = (JuegoTipo2)this.lista_juegos.SelectedItem;
                    juego.SetData(juegoTipo2Control.getData());
                }
                this.controlador.Guardar();
                MessageBox.Show("Los datos del juego se guardaron correctamente", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch
            {
                MessageBox.Show("Hubo un error al guardar el juego", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
